<!DOCTYPE html>
<!-- saved from url=(0040)http://mybatis.org/spring/zh/sample.html -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh" lang="zh"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="author" content="Eduardo Macarron">
    <meta name="Date-Revision-yyyymmdd" content="20200309">
    <meta http-equiv="Content-Language" content="zh">
    <title>mybatis-spring – MyBatis-Spring | 示例代码</title>
    <link rel="stylesheet" href="./mybatis-spring – MyBatis-Spring _ 示例代码_files/apache-maven-fluido-1.7.min.css">
    <link rel="stylesheet" href="./mybatis-spring – MyBatis-Spring _ 示例代码_files/site.css">
    <link rel="stylesheet" href="./mybatis-spring – MyBatis-Spring _ 示例代码_files/print.css" media="print">
    <script type="text/javascript" src="./mybatis-spring – MyBatis-Spring _ 示例代码_files/apache-maven-fluido-1.7.min.js.下载"></script>
  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><div id="bannerLeft"><h2>mybatis-spring</h2>
</div>
</div>
        <div class="pull-right"><a href="http://mybatis.org/" id="bannerRight" title="MyBatis logo"><img src="./mybatis-spring – MyBatis-Spring _ 示例代码_files/mybatis-logo.png" alt="MyBatis logo"></a></div>
        <div class="clear"><hr></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">最近更新: 09 三月 2020<span class="divider">|</span>
</li>
          <li id="projectVersion">版本: 2.0.4</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
    <ul class="nav nav-list">
      <li class="nav-header">参考文档</li>
    <li><a href="http://mybatis.org/spring/zh/index.html" title="简介"><span class="none"></span>简介</a></li>
    <li><a href="http://mybatis.org/spring/zh/getting-started.html" title="入门"><span class="none"></span>入门</a></li>
    <li><a href="http://mybatis.org/spring/zh/factorybean.html" title="SqlSessionFactoryBean"><span class="none"></span>SqlSessionFactoryBean</a></li>
    <li><a href="http://mybatis.org/spring/zh/transactions.html" title="事务"><span class="icon-chevron-right"></span>事务</a></li>
    <li><a href="http://mybatis.org/spring/zh/sqlsession.html" title="使用 SqlSession"><span class="icon-chevron-right"></span>使用 SqlSession</a></li>
    <li><a href="http://mybatis.org/spring/zh/mappers.html" title="注入映射器"><span class="icon-chevron-right"></span>注入映射器</a></li>
    <li><a href="http://mybatis.org/spring/zh/boot.html" title="使用 Spring Boot"><span class="none"></span>使用 Spring Boot</a></li>
    <li><a href="http://mybatis.org/spring/zh/using-api.html" title="使用 MyBatis API"><span class="none"></span>使用 MyBatis API</a></li>
    <li><a href="http://mybatis.org/spring/zh/batch.html" title="使用 Spring Batch"><span class="none"></span>使用 Spring Batch</a></li>
    <li class="active"><a href="http://mybatis.org/spring/zh/sample.html#"><span class="none"></span>示例代码</a></li>
      <li class="nav-header">项目文档</li>
    <li><a href="http://mybatis.org/spring/zh/project-info.html" title="项目信息"><span class="icon-chevron-right"></span>项目信息</a></li>
    <li><a href="http://mybatis.org/spring/zh/project-reports.html" title="项目报表"><span class="icon-chevron-right"></span>项目报表</a></li>
</ul>
          <hr>
          <div id="poweredBy">
            <div class="clear"></div>
            <div class="clear"></div>
            <div class="clear"></div>
            <div class="clear"></div>
<a href="http://maven.apache.org/" title="构建依靠 Maven" class="poweredBy"><img class="builtBy" alt="构建依靠 Maven" src="./mybatis-spring – MyBatis-Spring _ 示例代码_files/maven-feather.png"></a>
            </div>
          </div>
        </div>
        <div id="bodyColumn" class="span10">


	
		<div class="section">
<h2><a name="a.E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.81"></a>示例代码</h2>

			
<p>
				<span class="label important">提示</span>
				查看 <a class="externalLink" href="https://github.com/mybatis/jpetstore-6">JPetstore 6 demo</a> 了解如何在完整的 Web 应用服务器上使用 Spring。
			</p>

			
<p>
				您可以在 MyBatis-Spring 的<a class="externalLink" href="https://github.com/mybatis/spring/tree/master/src/test/java/org/mybatis/spring/sample">代码仓库</a> 中查看示例代码：
			</p>
			
<p>
				所有示例都能在 JUnit 5 下运行。
			</p>
			
<p>
				示例代码演示了事务服务从数据访问层获取域对象的典型设计。
			</p>
			
<p>
				<tt>FooService.java</tt> 作为服务:
			</p>
			
<div class="source"><pre class="prettyprint"><span class="lit">@Transactional</span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">FooService</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

  </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">final</span><span class="pln"> </span><span class="typ">UserMapper</span><span class="pln"> userMapper</span><span class="pun">;</span><span class="pln">

  </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">FooService</span><span class="pun">(</span><span class="typ">UserMapper</span><span class="pln"> userMapper</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">userMapper </span><span class="pun">=</span><span class="pln"> userMapper</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">User</span><span class="pln"> doSomeBusinessStuff</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> userId</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">userMapper</span><span class="pun">.</span><span class="pln">getUser</span><span class="pun">(</span><span class="pln">userId</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

</span><span class="pun">}</span></pre></div>
			
<p>
				它是一个事务 bean，所以当调用它的任何方法时，事务被启动，在方法结束且没有抛出任何未经检查的异常的时候事务将会被提交。注意，事务的行为可以通过 <tt>@Transactional</tt> 的属性进行配置。这不是必需的；你可以使用 Spring 提供的任何其他方式来划分你的事务范围。
			</p>
			
<p>
				此服务调用使用 MyBatis 构建的数据访问层.。该层只包含一个接口，<tt>UserMapper.java</tt>，这将被 MyBatis 构建的动态代理使用，在运行时通过 Spring 注入到服务之中。
			</p>
			
<div class="source"><pre class="prettyprint"><span class="kwd">public</span><span class="pln"> </span><span class="kwd">interface</span><span class="pln"> </span><span class="typ">UserMapper</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

  </span><span class="typ">User</span><span class="pln"> getUser</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> userId</span><span class="pun">);</span><span class="pln">

</span><span class="pun">}</span></pre></div>			
			
<p> 
			  注意，为了简单起见，我们使用了接口 <tt>UserMapper.java</tt>。在使用 DAO 的场景中，一个 DAO 类应该分为一个接口和一个实现类。回到这个例子里，准确来说，这个接口应该叫 <tt>UserDao.java</tt> 。
			</p>
			
<p>
				我们将看到不同的方法来发现映射器接口，将其注册到 Spring 并将其注入到服务 bean 中：
			</p>
			
<table border="0" class="table table-striped"><caption>测试场景</caption>
				
				<thead>
					
<tr class="a">
						
<th>样例测试</th>
						
<th>描述</th>
					</tr>
				</thead>
				<tbody>
					
<tr class="b">
						
<td>
							<tt>SampleMapperTest.java</tt>
						</td>
						
<td>
							演示基于 <tt>MapperFactoryBean</tt> 的基本配置，这将动态构建 <tt>UserMapper</tt> 的一个实现。
						</td>
					</tr>
					
<tr class="a">
						
<td>
							<tt>SampleScannerTest.java</tt>
						</td>
						
<td>
							演示如何使用 <tt>MapperScannerConfigurer</tt> 来自动发现项目中所有的映射器。
						</td>
					</tr>
					
<tr class="b">
						
<td>
							<tt>SampleSqlSessionTest.java</tt>
						</td>
						
<td>
							演示如何基于 Spring 管理的 <tt>SqlSession</tt> 手动编写 DAO，并在 <tt>UserDaoImpl.java</tt> 中提供你自己的实现。
						</td>
					</tr>
					
<tr class="a">
						
<td>
							<tt>SampleEnableTest</tt>
						</td>
						
<td>
							演示如何使用 Spring 的 <tt>@Configuration</tt> 和 <tt>@MapperScann</tt> 注解来自动发现 mappers.
						</td>
					</tr>
					
<tr class="b">
						
<td>
							<tt>SampleNamespaceTest</tt>
						</td>
						
<td>
							演示如何使用自定义 MyBatis XML 命名空间. 
						</td>
					</tr>
          
<tr class="a">
            
<td>
              <tt>SampleJavaConfigTest.java</tt>
            </td>
            
<td>
              演示如何基于 Spring 的 <tt>@Configuration</tt> 来手工创建 MyBatis 的 bean。
            </td>
          </tr>
          
<tr class="b">
            
<td>
              <tt>SampleJobJavaConfigTest.java</tt>
            </td>
            
<td>
              演示如何在 Java 配置中使用 Spring Batch 中的 <tt>ItemReader</tt> 和 <tt>ItemWriter</tt>。
            </td>
          </tr>
          
<tr class="a">
            
<td>
              <tt>SampleJobXmlConfigTest.java</tt>
            </td>
            
<td>
              演示如何在 XML 配置中使用 Spring Batch 中的 <tt>ItemReader</tt> 和 <tt>ItemWriter</tt>。
            </td>
          </tr>
				</tbody>
			</table>
			
<p>
				查看不同的 <tt>applicationContext.xml</tt> 文件以了解 MyBatis-Spring 在实践中是如何运用的。
			</p>

		</div>
	

        </div>
      </div>
    </div>
    <hr>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright ©2010–2020
<a href="http://www.mybatis.org/">MyBatis.org</a>.
All rights reserved.</p>
        </div>
      </div>
    </footer>
  

<div class="xl-chrome-ext-bar" id="xl_chrome_ext_{4DB361DE-01F7-4376-B494-639E489D19ED}" style="display: none;">
      <div class="xl-chrome-ext-bar__logo"></div>

      <a id="xl_chrome_ext_download" href="javascript:;" class="xl-chrome-ext-bar__option">下载视频</a>
      <a id="xl_chrome_ext_close" href="javascript:;" class="xl-chrome-ext-bar__close"></a>
    </div></body></html>